﻿using System;
using CI.Organism;

namespace CI
{
    /// <summary>
    /// Implementation of the IPhysical object in the Environment
    /// </summary>
    public interface IPhysicalEnvironment : IDisposable
    {
        /// <summary>
        /// Bind all physical world events to SynapseIO
        /// eg "Left Bumper" to a IO synapse, "Right Drive" to a IO synapse
        /// </summary>
        void BindSynapseIO();

        /// <summary>
        /// Unbind all physical world events to SynapseIO
        /// eg "Left Bumper" to a IO synapse, "Right Drive" to a IO synapse
        /// </summary>
        void UnBindSynapseIO();

        /// <summary>
        /// Base object of the Organism in the physical environment, used to get locations, place in environment
        /// </summary>
        object BaseObject { get; }

        /// <summary>
        /// Organism it is relative to
        /// </summary>
        IOrganism Organism { get; }
    }
}